home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / comctrls.int < prev    next >
Encoding:
Text File  |  1998-02-09  |  52.2 KB  |  1,606 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1996,98 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit ComCtrls;
  11.  
  12. {$R-}
  13.  
  14. interface
  15.  
  16. uses Messages, Windows, SysUtils, CommCtrl, Classes, Controls, Forms,
  17.   Menus, Graphics, StdCtrls, RichEdit, ToolWin;
  18.  
  19. type
  20.   TTabChangingEvent = procedure(Sender: TObject;
  21.     var AllowChange: Boolean) of object;
  22.  
  23.   TTabPosition = (tpTop, tpBottom);
  24.  
  25.   TCustomTabControl = class(TWinControl)
  26.   protected
  27.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  28.     function CanChange: Boolean; dynamic;
  29.     function CanShowTab(TabIndex: Integer): Boolean; virtual;
  30.     procedure Change; dynamic;
  31.     procedure CreateParams(var Params: TCreateParams); override;
  32.     procedure CreateWnd; override;
  33.     procedure DestroyWnd; override;
  34.     property DisplayRect: TRect;
  35.     property HotTrack: Boolean default False;
  36.     property MultiLine: Boolean default False;
  37.     property ScrollOpposite: Boolean default False;
  38.     property TabHeight: Smallint default 0;
  39.     property TabIndex: Integer default -1;
  40.     property TabPosition: TTabPosition default tpTop;
  41.     property Tabs: TStrings;
  42.     property TabWidth: Smallint default 0;
  43.     property OnChange: TNotifyEvent;
  44.     property OnChanging: TTabChangingEvent;
  45.   public
  46.     constructor Create(AOwner: TComponent); override;
  47.     destructor Destroy; override;
  48.     property TabStop default True;
  49.   end;
  50.  
  51.   TTabControl = class(TCustomTabControl)
  52.   public
  53.     property DisplayRect;
  54.   published
  55.     property Align;
  56.     property DragCursor;
  57.     property DragMode;
  58.     property Enabled;
  59.     property Font;
  60.     property HotTrack;
  61.     property MultiLine;
  62.     property ParentFont;
  63.     property ParentShowHint;
  64.     property PopupMenu;
  65.     property ScrollOpposite;
  66.     property ShowHint;
  67.     property TabHeight;
  68.     property TabIndex;
  69.     property TabOrder;
  70.     property TabPosition;
  71.     property Tabs;
  72.     property TabStop;
  73.     property TabWidth;
  74.     property Visible;
  75.     property OnChange;
  76.     property OnChanging;
  77.     property OnDragDrop;
  78.     property OnDragOver;
  79.     property OnEndDrag;
  80.     property OnEnter;
  81.     property OnExit;
  82.     property OnMouseDown;
  83.     property OnMouseMove;
  84.     property OnMouseUp;
  85.     property OnStartDrag;
  86.   end;
  87.  
  88.   TPageControl = class;
  89.  
  90.   TTabSheet = class(TWinControl)
  91.   protected
  92.     procedure CreateParams(var Params: TCreateParams); override;
  93.     procedure DoHide; dynamic;
  94.     procedure DoShow; dynamic;
  95.     procedure ReadState(Reader: TReader); override;
  96.   public
  97.     constructor Create(AOwner: TComponent); override;
  98.     destructor Destroy; override;
  99.     property PageControl: TPageControl;
  100.     property TabIndex: Integer;
  101.   published
  102.     property Caption;
  103.     property Enabled;
  104.     property Font;
  105.     property Height stored False;
  106.     property Left stored False;
  107.     property PageIndex: Integer;
  108.     property ParentFont;
  109.     property ParentShowHint;
  110.     property PopupMenu;
  111.     property ShowHint;
  112.     property TabVisible: Boolean default True;
  113.     property Top stored False;
  114.     property Visible stored False;
  115.     property Width stored False;
  116.     property OnDragDrop;
  117.     property OnDragOver;
  118.     property OnEnter;
  119.     property OnExit;
  120.     property OnHide: TNotifyEvent;
  121.     property OnMouseDown;
  122.     property OnMouseMove;
  123.     property OnMouseUp;
  124.     property OnShow: TNotifyEvent;
  125.   end;
  126.  
  127.   TPageControl = class(TCustomTabControl)
  128.   protected
  129.     function CanShowTab(TabIndex: Integer): Boolean; override;
  130.     procedure Change; override;
  131.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  132.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  133.     procedure ShowControl(AControl: TControl); override;
  134.   public
  135.     constructor Create(AOwner: TComponent); override;
  136.     destructor Destroy; override;
  137.     function FindNextPage(CurPage: TTabSheet;
  138.       GoForward, CheckTabVisible: Boolean): TTabSheet;
  139.     procedure SelectNextPage(GoForward: Boolean);
  140.     property PageCount: Integer;
  141.     property Pages[Index: Integer]: TTabSheet;
  142.   published
  143.     property ActivePage: TTabSheet;
  144.     property Align;
  145.     property DragCursor;
  146.     property DragMode;
  147.     property Enabled;
  148.     property Font;
  149.     property HotTrack;
  150.     property MultiLine;
  151.     property ParentFont;
  152.     property ParentShowHint;
  153.     property PopupMenu;
  154.     property ScrollOpposite;
  155.     property ShowHint;
  156.     property TabHeight;
  157.     property TabOrder;
  158.     property TabPosition;
  159.     property TabStop;
  160.     property TabWidth;
  161.     property Visible;
  162.     property OnChange;
  163.     property OnChanging;
  164.     property OnDragDrop;
  165.     property OnDragOver;
  166.     property OnEndDrag;
  167.     property OnEnter;
  168.     property OnExit;
  169.     property OnMouseDown;
  170.     property OnMouseMove;
  171.     property OnMouseUp;
  172.     property OnStartDrag;
  173.   end;
  174.  
  175.   TStatusBar = class;
  176.  
  177.   TStatusPanelStyle = (psText, psOwnerDraw);
  178.   TStatusPanelBevel = (pbNone, pbLowered, pbRaised);
  179.  
  180.   TStatusPanel = class(TCollectionItem)
  181.   public
  182.     constructor Create(Collection: TCollection); override;
  183.     procedure Assign(Source: TPersistent); override;
  184.   published
  185.     property Alignment: TAlignment default taLeftJustify;
  186.     property Bevel: TStatusPanelBevel default pbLowered;
  187.     property Style: TStatusPanelStyle default psText;
  188.     property Text: string;
  189.     property Width: Integer;
  190.   end;
  191.  
  192.   TStatusPanels = class(TCollection)
  193.   protected
  194.     function GetOwner: TPersistent; override;
  195.     procedure Update(Item: TCollectionItem); override;
  196.   public
  197.     constructor Create(StatusBar: TStatusBar);
  198.     function Add: TStatusPanel;
  199.     property Items[Index: Integer]: TStatusPanel; default;
  200.   end;
  201.  
  202.   TDrawPanelEvent = procedure(StatusBar: TStatusBar; Panel: TStatusPanel;
  203.     const Rect: TRect) of object;
  204.  
  205.   TStatusBar = class(TWinControl)
  206.   protected
  207.     procedure CreateParams(var Params: TCreateParams); override;
  208.     procedure CreateWnd; override;
  209.     procedure DrawPanel(Panel: TStatusPanel; const Rect: TRect); dynamic;
  210.     procedure Resize; dynamic;
  211.   public
  212.     constructor Create(AOwner: TComponent); override;
  213.     destructor Destroy; override;
  214.     property Canvas: TCanvas;
  215.   published
  216.     property Align default alBottom;
  217.     property DragCursor;
  218.     property DragMode;
  219.     property Enabled;
  220.     property Font;
  221.     property Panels: TStatusPanels;
  222.     property ParentFont;
  223.     property ParentShowHint;
  224.     property PopupMenu;
  225.     property ShowHint;
  226.     property SimplePanel: Boolean;
  227.     property SimpleText: string;
  228.     property SizeGrip: Boolean default True;
  229.     property Visible;
  230.     property OnClick;
  231.     property OnDblClick;
  232.     property OnDragDrop;
  233.     property OnDragOver;
  234.     property OnEndDrag;
  235.     property OnMouseDown;
  236.     property OnMouseMove;
  237.     property OnMouseUp;
  238.     property OnDrawPanel: TDrawPanelEvent;
  239.     property OnResize: TNotifyEvent;
  240.     property OnStartDrag;
  241.   end;
  242.  
  243.   THeaderControl = class;
  244.  
  245.   THeaderSectionStyle = (hsText, hsOwnerDraw);
  246.  
  247.   THeaderSection = class(TCollectionItem)
  248.   protected
  249.     function GetDisplayName: string; override;
  250.   public
  251.     constructor Create(Collection: TCollection); override;
  252.     procedure Assign(Source: TPersistent); override;
  253.     property Left: Integer;
  254.     property Right: Integer;
  255.   published
  256.     property Alignment: TAlignment default taLeftJustify;
  257.     property AllowClick: Boolean default True;
  258.     property MaxWidth: Integer default 10000;
  259.     property MinWidth: Integer default 0;
  260.     property Style: THeaderSectionStyle default hsText;
  261.     property Text: string;
  262.     property Width: Integer;
  263.   end;
  264.  
  265.   THeaderSections = class(TCollection)
  266.   protected
  267.     function GetOwner: TPersistent; override;
  268.     procedure Update(Item: TCollectionItem); override;
  269.   public
  270.     constructor Create(HeaderControl: THeaderControl);
  271.     function Add: THeaderSection;
  272.     property Items[Index: Integer]: THeaderSection; default;
  273.   end;
  274.  
  275.   TSectionTrackState = (tsTrackBegin, tsTrackMove, tsTrackEnd);
  276.  
  277.   TDrawSectionEvent = procedure(HeaderControl: THeaderControl;
  278.     Section: THeaderSection; const Rect: TRect; Pressed: Boolean) of object;
  279.   TSectionNotifyEvent = procedure(HeaderControl: THeaderControl;
  280.     Section: THeaderSection) of object;
  281.   TSectionTrackEvent = procedure(HeaderControl: THeaderControl;
  282.     Section: THeaderSection; Width: Integer;
  283.     State: TSectionTrackState) of object;
  284.  
  285.   THeaderControl = class(TWinControl)
  286.   protected
  287.     procedure CreateParams(var Params: TCreateParams); override;
  288.     procedure CreateWnd; override;
  289.     procedure DrawSection(Section: THeaderSection; const Rect: TRect;
  290.       Pressed: Boolean); dynamic;
  291.     procedure Resize; dynamic;
  292.     procedure SectionClick(Section: THeaderSection); dynamic;
  293.     procedure SectionResize(Section: THeaderSection); dynamic;
  294.     procedure SectionTrack(Section: THeaderSection; Width: Integer;
  295.       State: TSectionTrackState); dynamic;
  296.   public
  297.     constructor Create(AOwner: TComponent); override;
  298.     destructor Destroy; override;
  299.     property Canvas: TCanvas;
  300.   published
  301.     property Align default alTop;
  302.     property DragCursor;
  303.     property DragMode;
  304.     property Enabled;
  305.     property Font;
  306.     property HotTrack: Boolean default False;
  307.     property Sections: THeaderSections;
  308.     property ShowHint;
  309.     property ParentFont;
  310.     property ParentShowHint;
  311.     property PopupMenu;
  312.     property Visible;
  313.     property OnDragDrop;
  314.     property OnDragOver;
  315.     property OnEndDrag;
  316.     property OnMouseDown;
  317.     property OnMouseMove;
  318.     property OnMouseUp;
  319.     property OnDrawSection: TDrawSectionEvent;
  320.     property OnResize: TNotifyEvent;
  321.     property OnSectionClick: TSectionNotifyEvent;
  322.     property OnSectionResize: TSectionNotifyEvent;
  323.     property OnSectionTrack: TSectionTrackEvent;
  324.     property OnStartDrag;
  325.   end;
  326.  
  327. { TTreeNode }
  328.  
  329.   TCustomTreeView = class;
  330.   TTreeNodes = class;
  331.  
  332.   TNodeState = (nsCut, nsDropHilited, nsFocused, nsSelected, nsExpanded);
  333.   TNodeAttachMode = (naAdd, naAddFirst, naAddChild, naAddChildFirst, naInsert);
  334.   TAddMode = (taAddFirst, taAdd, taInsert);
  335.  
  336.   PNodeInfo = ^TNodeInfo;
  337.   TNodeInfo = packed record
  338.     ImageIndex: Integer;
  339.     SelectedIndex: Integer;
  340.     StateIndex: Integer;
  341.     OverlayIndex: Integer;
  342.     Data: Pointer;
  343.     Count: Integer;
  344.     Text: string[255];
  345.   end;
  346.  
  347.   TTreeNode = class(TPersistent)
  348.   public
  349.     constructor Create(AOwner: TTreeNodes);
  350.     destructor Destroy; override;
  351.     function AlphaSort: Boolean;
  352.     procedure Assign(Source: TPersistent); override;
  353.     procedure Collapse(Recurse: Boolean);
  354.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  355.     procedure Delete;
  356.     procedure DeleteChildren;
  357.     function DisplayRect(TextOnly: Boolean): TRect;
  358.     function EditText: Boolean;
  359.     procedure EndEdit(Cancel: Boolean);
  360.     procedure Expand(Recurse: Boolean);
  361.     function getFirstChild: TTreeNode;
  362.     function GetHandle: HWND;
  363.     function GetLastChild: TTreeNode;
  364.     function GetNext: TTreeNode;
  365.     function GetNextChild(Value: TTreeNode): TTreeNode;
  366.     function getNextSibling: TTreeNode;
  367.     function GetNextVisible: TTreeNode;
  368.     function GetPrev: TTreeNode;
  369.     function GetPrevChild(Value: TTreeNode): TTreeNode;
  370.     function getPrevSibling: TTreeNode;
  371.     function GetPrevVisible: TTreeNode;
  372.     function HasAsParent(Value: TTreeNode): Boolean;
  373.     function IndexOf(Value: TTreeNode): Integer;
  374.     procedure MakeVisible;
  375.     procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); virtual;
  376.     property AbsoluteIndex: Integer;
  377.     property Count: Integer;
  378.     property Cut: Boolean;
  379.     property Data: Pointer;
  380.     property Deleting: Boolean;
  381.     property Focused: Boolean;
  382.     property DropTarget: Boolean;
  383.     property Selected: Boolean;
  384.     property Expanded: Boolean;
  385.     property Handle: HWND;
  386.     property HasChildren: Boolean;
  387.     property ImageIndex: Integer;
  388.     property Index: Integer;
  389.     property IsVisible: Boolean;
  390.     property Item[Index: Integer]: TTreeNode; default;
  391.     property ItemId: HTreeItem;
  392.     property Level: Integer;
  393.     property OverlayIndex: Integer;
  394.     property Owner: TTreeNodes;
  395.     property Parent: TTreeNode;
  396.     property SelectedIndex: Integer;
  397.     property StateIndex: Integer;
  398.     property Text: string;
  399.     property TreeView: TCustomTreeView;
  400.   end;
  401.  
  402. { TTreeNodes }
  403.  
  404.   PNodeCache = ^TNodeCache;
  405.   TNodeCache = record
  406.     CacheNode: TTreeNode;
  407.     CacheIndex: Integer;
  408.   end;
  409.  
  410.   TTreeNodes = class(TPersistent)
  411.   protected
  412.     function AddItem(Parent, Target: HTreeItem; const Item: TTVItem;
  413.       AddMode: TAddMode): HTreeItem;
  414.     function InternalAddObject(Node: TTreeNode; const S: string;
  415.       Ptr: Pointer; AddMode: TAddMode): TTreeNode;
  416.     procedure DefineProperties(Filer: TFiler); override;
  417.     function CreateItem(Node: TTreeNode): TTVItem;
  418.     function GetCount: Integer;
  419.     procedure SetItem(Index: Integer; Value: TTreeNode);
  420.     procedure SetUpdateState(Updating: Boolean);
  421.   public
  422.     constructor Create(AOwner: TCustomTreeView);
  423.     destructor Destroy; override;
  424.     function AddChildFirst(Node: TTreeNode; const S: string): TTreeNode;
  425.     function AddChild(Node: TTreeNode; const S: string): TTreeNode;
  426.     function AddChildObjectFirst(Node: TTreeNode; const S: string;
  427.       Ptr: Pointer): TTreeNode;
  428.     function AddChildObject(Node: TTreeNode; const S: string;
  429.       Ptr: Pointer): TTreeNode;
  430.     function AddFirst(Node: TTreeNode; const S: string): TTreeNode;
  431.     function Add(Node: TTreeNode; const S: string): TTreeNode;
  432.     function AddObjectFirst(Node: TTreeNode; const S: string;
  433.       Ptr: Pointer): TTreeNode;
  434.     function AddObject(Node: TTreeNode; const S: string;
  435.       Ptr: Pointer): TTreeNode;
  436.     procedure Assign(Source: TPersistent); override;
  437.     procedure BeginUpdate;
  438.     procedure Clear;
  439.     procedure Delete(Node: TTreeNode);
  440.     procedure EndUpdate;
  441.     function GetFirstNode: TTreeNode;
  442.     function GetNode(ItemId: HTreeItem): TTreeNode;
  443.     function Insert(Node: TTreeNode; const S: string): TTreeNode;
  444.     function InsertObject(Node: TTreeNode; const S: string;
  445.       Ptr: Pointer): TTreeNode;
  446.     property Count: Integer;
  447.     property Handle: HWND;
  448.     property Item[Index: Integer]: TTreeNode; default;
  449.     property Owner: TCustomTreeView;
  450.   end;
  451.  
  452. { TCustomTreeView }
  453.  
  454.   THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton,
  455.     htOnIcon, htOnIndent, htOnLabel, htOnRight,
  456.     htOnStateIcon, htToLeft, htToRight);
  457.   THitTests = set of THitTest;
  458.   ETreeViewError = class(Exception);
  459.  
  460.   TTVChangingEvent = procedure(Sender: TObject; Node: TTreeNode;
  461.     var AllowChange: Boolean) of object;
  462.   TTVChangedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  463.   TTVEditingEvent = procedure(Sender: TObject; Node: TTreeNode;
  464.     var AllowEdit: Boolean) of object;
  465.   TTVEditedEvent = procedure(Sender: TObject; Node: TTreeNode; var S: string) of object;
  466.   TTVExpandingEvent = procedure(Sender: TObject; Node: TTreeNode;
  467.     var AllowExpansion: Boolean) of object;
  468.   TTVCollapsingEvent = procedure(Sender: TObject; Node: TTreeNode;
  469.     var AllowCollapse: Boolean) of object;
  470.   TTVExpandedEvent = procedure(Sender: TObject; Node: TTreeNode) of object;
  471.   TTVCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode;
  472.     Data: Integer; var Compare: Integer) of object;
  473.  
  474.   TSortType = (stNone, stData, stText, stBoth);
  475.  
  476.   TCustomTreeView = class(TWinControl)
  477.   protected
  478.     function CanEdit(Node: TTreeNode): Boolean; dynamic;
  479.     function CanChange(Node: TTreeNode): Boolean; dynamic;
  480.     function CanCollapse(Node: TTreeNode): Boolean; dynamic;
  481.     function CanExpand(Node: TTreeNode): Boolean; dynamic;
  482.     procedure Change(Node: TTreeNode); dynamic;
  483.     procedure Collapse(Node: TTreeNode); dynamic;
  484.     function CreateNode: TTreeNode; virtual;
  485.     procedure CreateParams(var Params: TCreateParams); override;
  486.     procedure CreateWnd; override;
  487.     procedure Delete(Node: TTreeNode); dynamic;
  488.     procedure DestroyWnd; override;
  489.     procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
  490.     procedure DoStartDrag(var DragObject: TDragObject); override;
  491.     procedure Edit(const Item: TTVItem); dynamic;
  492.     procedure Expand(Node: TTreeNode); dynamic;
  493.     function GetDragImages: TCustomImageList; override;
  494.     procedure GetImageIndex(Node: TTreeNode); virtual;
  495.     procedure GetSelectedIndex(Node: TTreeNode); virtual;
  496.     procedure Loaded; override;
  497.     procedure Notification(AComponent: TComponent;
  498.       Operation: TOperation); override;
  499.     procedure SetDragMode(Value: TDragMode); override;
  500.     procedure WndProc(var Message: TMessage); override;
  501.     property OnEditing: TTVEditingEvent;
  502.     property OnEdited: TTVEditedEvent;
  503.     property OnExpanding: TTVExpandingEvent;
  504.     property OnExpanded: TTVExpandedEvent;
  505.     property OnCollapsing: TTVCollapsingEvent;
  506.     property OnCollapsed: TTVExpandedEvent;
  507.     property OnChanging: TTVChangingEvent;
  508.     property OnChange: TTVChangedEvent;
  509.     property OnCompare: TTVCompareEvent;
  510.     property OnDeletion: TTVExpandedEvent;
  511.     property OnGetImageIndex: TTVExpandedEvent;
  512.     property OnGetSelectedIndex: TTVExpandedEvent;
  513.     property ShowButtons: Boolean default True;
  514.     property BorderStyle: TBorderStyle default bsSingle;
  515.     property ShowLines: Boolean default True;
  516.     property ShowRoot: Boolean default True;
  517.     property ReadOnly: Boolean default False;
  518.     property RightClickSelect: Boolean default False;
  519.     property Indent: Integer;
  520.     property Items: TTreeNodes;
  521.     property SortType: TSortType default stNone;
  522.     property HideSelection: Boolean default True;
  523.     property Images: TImageList;
  524.     property StateImages: TImageList;
  525.   public
  526.     constructor Create(AOwner: TComponent); override;
  527.     destructor Destroy; override;
  528.     function AlphaSort: Boolean;
  529.     function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
  530.     procedure FullCollapse;
  531.     procedure FullExpand;
  532.     function GetHitTestInfoAt(X, Y: Integer): THitTests;
  533.     function GetNodeAt(X, Y: Integer): TTreeNode;
  534.     function IsEditing: Boolean;
  535.     procedure LoadFromFile(const FileName: string);
  536.     procedure LoadFromStream(Stream: TStream);
  537.     procedure SaveToFile(const FileName: string);
  538.     procedure SaveToStream(Stream: TStream);
  539.     property DropTarget: TTreeNode;
  540.     property Selected: TTreeNode;
  541.     property TopItem: TTreeNode;
  542.   end;
  543.  
  544.   TTreeView = class(TCustomTreeView)
  545.   published
  546.     property ShowButtons;
  547.     property BorderStyle;
  548.     property DragCursor;
  549.     property ShowLines;
  550.     property ShowRoot;
  551.     property ReadOnly;
  552.     property RightClickSelect;
  553.     property DragMode;
  554.     property HideSelection;
  555.     property Indent;
  556.     property Items;
  557.     property OnEditing;
  558.     property OnEdited;
  559.     property OnExpanding;
  560.     property OnExpanded;
  561.     property OnCollapsing;
  562.     property OnCompare;
  563.     property OnCollapsed;
  564.     property OnChanging;
  565.     property OnChange;
  566.     property OnDeletion;
  567.     property OnGetImageIndex;
  568.     property OnGetSelectedIndex;
  569.     property Align;
  570.     property Enabled;
  571.     property Font;
  572.     property Color;
  573.     property ParentColor default False;
  574.     property ParentCtl3D;
  575.     property Ctl3D;
  576.     property SortType;
  577.     property TabOrder;
  578.     property TabStop default True;
  579.     property Visible;
  580.     property OnClick;
  581.     property OnEnter;
  582.     property OnExit;
  583.     property OnDragDrop;
  584.     property OnDragOver;
  585.     property OnStartDrag;
  586.     property OnEndDrag;
  587.     property OnMouseDown;
  588.     property OnMouseMove;
  589.     property OnMouseUp;
  590.     property OnDblClick;
  591.     property OnKeyDown;
  592.     property OnKeyPress;
  593.     property OnKeyUp;
  594.     property PopupMenu;
  595.     property ParentFont;
  596.     property ParentShowHint;
  597.     property ShowHint;
  598.     property Images;
  599.     property StateImages;
  600.   end;
  601.  
  602. { TTrackBar }
  603.  
  604.   TTrackBarOrientation = (trHorizontal, trVertical);
  605.   TTickMark = (tmBottomRight, tmTopLeft, tmBoth);
  606.   TTickStyle = (tsNone, tsAuto, tsManual);
  607.  
  608.   TTrackBar = class(TWinControl)
  609.   protected
  610.     procedure CreateParams(var Params: TCreateParams); override;
  611.     procedure CreateWnd; override;
  612.     procedure DestroyWnd; override;
  613.   public
  614.     constructor Create(AOwner: TComponent); override;
  615.     procedure SetTick(Value: Integer);
  616.   published
  617.     property Ctl3D;
  618.     property DragCursor;
  619.     property DragMode;
  620.     property Enabled;
  621.     property LineSize: Integer default 1;
  622.     property Max: Integer default 10;
  623.     property Min: Integer default 0;
  624.     property Orientation: TTrackBarOrientation;
  625.     property ParentCtl3D;
  626.     property ParentShowHint;
  627.     property PageSize: Integer default 2;
  628.     property PopupMenu;
  629.     property Frequency: Integer;
  630.     property Position: Integer;
  631.     property SelEnd: Integer;
  632.     property SelStart: Integer;
  633.     property ShowHint;
  634.     property TabOrder;
  635.     property TabStop default True;
  636.     property TickMarks: TTickMark;
  637.     property TickStyle: TTickStyle;
  638.     property Visible;
  639.     property OnChange: TNotifyEvent;
  640.     property OnDragDrop;
  641.     property OnDragOver;
  642.     property OnEndDrag;
  643.     property OnEnter;
  644.     property OnExit;
  645.     property OnKeyDown;
  646.     property OnKeyPress;
  647.     property OnKeyUp;
  648.     property OnStartDrag;
  649.   end;
  650.  
  651. { TProgressBar }
  652.  
  653.   TProgressRange = Integer; // for backward compatibility
  654.  
  655.   TProgressBar = class(TWinControl)
  656.   protected
  657.     procedure CreateParams(var Params: TCreateParams); override;
  658.     procedure CreateWnd; override;
  659.   public
  660.     constructor Create(AOwner: TComponent); override;
  661.     procedure StepIt;
  662.     procedure StepBy(Delta: Integer);
  663.   published
  664.     property Align;
  665.     property DragCursor;
  666.     property DragMode;
  667.     property Enabled;
  668.     property Hint;
  669.     property Min: Integer;
  670.     property Max: Integer;
  671.     property ParentShowHint;
  672.     property PopupMenu;
  673.     property Position: Integer default 0;
  674.     property Step: Integer default 10;
  675.     property ShowHint;
  676.     property TabOrder;
  677.     property TabStop;
  678.     property Visible;
  679.     property OnDragDrop;
  680.     property OnDragOver;
  681.     property OnEndDrag;
  682.     property OnEnter;
  683.     property OnExit;
  684.     property OnMouseDown;
  685.     property OnMouseMove;
  686.     property OnMouseUp;
  687.     property OnStartDrag;
  688.   end;
  689.  
  690. { TTextAttributes }
  691.  
  692.   TCustomRichEdit = class;
  693.  
  694.   TAttributeType = (atSelected, atDefaultText);
  695.   TConsistentAttribute = (caBold, caColor, caFace, caItalic,
  696.     caSize, caStrikeOut, caUnderline, caProtected);
  697.   TConsistentAttributes = set of TConsistentAttribute;
  698.  
  699.   TTextAttributes = class(TPersistent)
  700.   protected
  701.     procedure InitFormat(var Format: TCharFormat);
  702.     procedure AssignTo(Dest: TPersistent); override;
  703.   public
  704.     constructor Create(AOwner: TCustomRichEdit; AttributeType: TAttributeType);
  705.     procedure Assign(Source: TPersistent); override;
  706.     property Charset: TFontCharset;
  707.     property Color: TColor;
  708.     property ConsistentAttributes: TConsistentAttributes;
  709.     property Name: TFontName;
  710.     property Pitch: TFontPitch;
  711.     property Protected: Boolean;
  712.     property Size: Integer;
  713.     property Style: TFontStyles;
  714.     property Height: Integer;
  715.   end;
  716.  
  717. { TParaAttributes }
  718.  
  719.   TNumberingStyle = (nsNone, nsBullet);
  720.  
  721.   TParaAttributes = class(TPersistent)
  722.   public
  723.     constructor Create(AOwner: TCustomRichEdit);
  724.     procedure Assign(Source: TPersistent); override;
  725.     property Alignment: TAlignment;
  726.     property FirstIndent: Longint;
  727.     property LeftIndent: Longint;
  728.     property Numbering: TNumberingStyle;
  729.     property RightIndent: Longint;
  730.     property Tab[Index: Byte]: Longint;
  731.     property TabCount: Integer;
  732.   end;
  733.  
  734. { TCustomRichEdit }
  735.  
  736.   TRichEditResizeEvent = procedure(Sender: TObject; Rect: TRect) of object;
  737.   TRichEditProtectChange = procedure(Sender: TObject;
  738.     StartPos, EndPos: Integer; var AllowChange: Boolean) of object;
  739.   TRichEditSaveClipboard = procedure(Sender: TObject;
  740.     NumObjects, NumChars: Integer; var SaveClipboard: Boolean) of object;
  741.   TSearchType = (stWholeWord, stMatchCase);
  742.   TSearchTypes = set of TSearchType;
  743.  
  744.   TConversion = class(TObject)
  745.   public
  746.     function ConvertReadStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  747.     function ConvertWriteStream(Stream: TStream; Buffer: PChar; BufSize: Integer): Integer; virtual;
  748.   end;
  749.  
  750.   TConversionClass = class of TConversion;
  751.  
  752.   PConversionFormat = ^TConversionFormat;
  753.   TConversionFormat = record
  754.     ConversionClass: TConversionClass;
  755.     Extension: string;
  756.     Next: PConversionFormat;
  757.   end;
  758.  
  759.   PRichEditStreamInfo = ^TRichEditStreamInfo;
  760.   TRichEditStreamInfo = record
  761.     Converter: TConversion;
  762.     Stream: TStream;
  763.   end;
  764.  
  765.   TCustomRichEdit = class(TCustomMemo)
  766.   protected
  767.     procedure CreateParams(var Params: TCreateParams); override;
  768.     procedure CreateWnd; override;
  769.     procedure DestroyWnd; override;
  770.     procedure RequestSize(const Rect: TRect); virtual;
  771.     procedure SelectionChange; dynamic;
  772.     procedure DoSetMaxLength(Value: Integer); override;
  773.     function GetSelLength: Integer; override;
  774.     function GetSelStart: Integer; override;
  775.     function GetSelText: string; override;
  776.     procedure SetSelLength(Value: Integer); override;
  777.     procedure SetSelStart(Value: Integer); override;
  778.     property HideSelection: Boolean default True;
  779.     property HideScrollBars: Boolean default True;
  780.     property Lines: TStrings;
  781.     property OnSaveClipboard: TRichEditSaveClipboard;
  782.     property OnSelectionChange: TNotifyEvent;
  783.     property OnProtectChange: TRichEditProtectChange;
  784.     property OnResizeRequest: TRichEditResizeEvent;
  785.     property PlainText: Boolean default False;
  786.   public
  787.     constructor Create(AOwner: TComponent); override;
  788.     destructor Destroy; override;
  789.     procedure Clear; override;
  790.     function FindText(const SearchStr: string;
  791.       StartPos, Length: Integer; Options: TSearchTypes): Integer;
  792.     function GetSelTextBuf(Buffer: PChar; BufSize: Integer): Integer; override;
  793.     procedure Print(const Caption: string); virtual;
  794.     class procedure RegisterConversionFormat(const AExtension: string;
  795.       AConversionClass: TConversionClass);
  796.     property DefaultConverter: TConversionClass;
  797.     property DefAttributes: TTextAttributes;
  798.     property SelAttributes: TTextAttributes;
  799.     property PageRect: TRect;
  800.     property Paragraph: TParaAttributes;
  801.   end;
  802.  
  803.   TRichEdit = class(TCustomRichEdit)
  804.   published
  805.     property Align;
  806.     property Alignment;
  807.     property BorderStyle;
  808.     property Color;
  809.     property Ctl3D;
  810.     property DragCursor;
  811.     property DragMode;
  812.     property Enabled;
  813.     property Font;
  814.     property HideSelection;
  815.     property HideScrollBars;
  816.     property ImeMode;
  817.     property ImeName;
  818.     property Lines;
  819.     property MaxLength;
  820.     property ParentColor;
  821.     property ParentCtl3D;
  822.     property ParentFont;
  823.     property ParentShowHint;
  824.     property PlainText;
  825.     property PopupMenu;
  826.     property ReadOnly;
  827.     property ScrollBars;
  828.     property ShowHint;
  829.     property TabOrder;
  830.     property TabStop default True;
  831.     property Visible;
  832.     property WantTabs;
  833.     property WantReturns;
  834.     property WordWrap;
  835.     property OnChange;
  836.     property OnDragDrop;
  837.     property OnDragOver;
  838.     property OnEndDrag;
  839.     property OnEnter;
  840.     property OnExit;
  841.     property OnKeyDown;
  842.     property OnKeyPress;
  843.     property OnKeyUp;
  844.     property OnMouseDown;
  845.     property OnMouseMove;
  846.     property OnMouseUp;
  847.     property OnResizeRequest;
  848.     property OnSelectionChange;
  849.     property OnStartDrag;
  850.     property OnProtectChange;
  851.     property OnSaveClipboard;
  852.   end;
  853.  
  854. { TUpDown }
  855.  
  856.   TUDAlignButton = (udLeft, udRight);
  857.   TUDOrientation = (udHorizontal, udVertical);
  858.   TUDBtnType = (btNext, btPrev);
  859.   TUDClickEvent = procedure (Sender: TObject; Button: TUDBtnType) of object;
  860.   TUDChangingEvent = procedure (Sender: TObject; var AllowChange: Boolean) of object;
  861.  
  862.   TCustomUpDown = class(TWinControl)
  863.   protected
  864.     function CanChange: Boolean;
  865.     procedure CreateParams(var Params: TCreateParams); override;
  866.     procedure CreateWnd; override;
  867.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  868.     procedure Click(Button: TUDBtnType); dynamic;
  869.     property AlignButton: TUDAlignButton default udRight;
  870.     property ArrowKeys: Boolean default True;
  871.     property Associate: TWinControl;
  872.     property Min: SmallInt;
  873.     property Max: SmallInt default 100;
  874.     property Increment: Integer default 1;
  875.     property Orientation: TUDOrientation default udVertical;
  876.     property Position: SmallInt;
  877.     property Thousands: Boolean default True;
  878.     property Wrap: Boolean;
  879.     property OnChanging: TUDChangingEvent;
  880.     property OnClick: TUDClickEvent;
  881.   public
  882.     constructor Create(AOwner: TComponent); override;
  883.   end;
  884.  
  885.   TUpDown = class(TCustomUpDown)
  886.   published
  887.     property AlignButton;
  888.     property Associate;
  889.     property ArrowKeys;
  890.     property Enabled;
  891.     property Hint;
  892.     property Min;
  893.     property Max;
  894.     property Increment;
  895.     property Orientation;
  896.     property ParentShowHint;
  897.     property PopupMenu;
  898.     property Position;
  899.     property ShowHint;
  900.     property TabOrder;
  901.     property TabStop;
  902.     property Thousands;
  903.     property Visible;
  904.     property Wrap;
  905.     property OnChanging;
  906.     property OnClick;
  907.     property OnEnter;
  908.     property OnExit;
  909.     property OnMouseDown;
  910.     property OnMouseMove;
  911.     property OnMouseUp;
  912.   end;
  913.  
  914. { THotKey }
  915.  
  916.   THKModifier = (hkShift, hkCtrl, hkAlt, hkExt);
  917.   THKModifiers = set of THKModifier;
  918.   THKInvalidKey = (hcNone, hcShift, hcCtrl, hcAlt, hcShiftCtrl,
  919.     hcShiftAlt, hcCtrlAlt, hcShiftCtrlAlt);
  920.   THKInvalidKeys = set of THKInvalidKey;
  921.  
  922.   TCustomHotKey = class(TWinControl)
  923.   protected
  924.     procedure CreateParams(var Params: TCreateParams); override;
  925.     procedure CreateWnd; override;
  926.     property AutoSize: Boolean default True;
  927.     property InvalidKeys: THKInvalidKeys;
  928.     property Modifiers: THKModifiers;
  929.     property HotKey: TShortCut;
  930.     property TabStop default True;
  931.   public
  932.     constructor Create(AOwner: TComponent); override;
  933.   end;
  934.  
  935.   THotKey = class(TCustomHotKey)
  936.   published
  937.     property AutoSize;
  938.     property Enabled;
  939.     property Hint;
  940.     property HotKey;
  941.     property InvalidKeys;
  942.     property Modifiers;
  943.     property ParentShowHint;
  944.     property PopupMenu;
  945.     property ShowHint;
  946.     property TabOrder;
  947.     property TabStop;
  948.     property Visible;
  949.     property OnEnter;
  950.     property OnExit;
  951.     property OnMouseDown;
  952.     property OnMouseMove;
  953.     property OnMouseUp;
  954.   end;
  955.  
  956. const
  957.   ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER;
  958.   ColumnTextWidth = LVSCW_AUTOSIZE;
  959.  
  960. type
  961.   TListColumns = class;
  962.   TListItems = class;
  963.   TCustomListView = class;
  964.   TWidth = ColumnHeaderWidth..MaxInt;
  965.  
  966.   TListColumn = class(TCollectionItem)
  967.   protected
  968.     procedure DefineProperties(Filer: TFiler); override;
  969.     function GetDisplayName: string; override;
  970.   public
  971.     constructor Create(Collection: TCollection); override;
  972.     destructor Destroy; override;
  973.     procedure Assign(Source: TPersistent); override;
  974.     property WidthType: TWidth;
  975.   published
  976.     property Alignment: TAlignment default taLeftJustify;
  977.     property Caption: string;
  978.     property Width: TWidth default 50;
  979.   end;
  980.  
  981.   TListColumns = class(TCollection)
  982.   protected
  983.     function GetOwner: TPersistent; override;
  984.     procedure Update(Item: TCollectionItem); override;
  985.   public
  986.     constructor Create(AOwner: TCustomListView);
  987.     function Add: TListColumn;
  988.     property Owner: TCustomListView;
  989.     property Items[Index: Integer]: TListColumn; default;
  990.   end;
  991.  
  992.   TDisplayCode = (drBounds, drIcon, drLabel, drSelectBounds);
  993.  
  994.   { TListItem }
  995.  
  996.   TListItem = class(TPersistent)
  997.   protected
  998.     procedure Assign(Source: TPersistent); override;
  999.   public
  1000.     constructor Create(AOwner: TListItems);
  1001.     destructor Destroy; override;
  1002.     procedure CancelEdit;
  1003.     procedure Delete;
  1004.     function DisplayRect(Code: TDisplayCode): TRect;
  1005.     function EditCaption: Boolean;
  1006.     function GetPosition: TPoint;
  1007.     procedure MakeVisible(PartialOK: Boolean);
  1008.     procedure Update;
  1009.     procedure SetPosition(const Value: TPoint);
  1010.     property Caption: string;
  1011.     property Checked: Boolean;
  1012.     property Cut: Boolean index 0;
  1013.     property Data: Pointer;
  1014.     property DropTarget: Boolean index 1;
  1015.     property Focused: Boolean index 2;
  1016.     property Handle: HWND;
  1017.     property ImageIndex: Integer index 0;
  1018.     property Index: Integer;
  1019.     property Left: Integer;
  1020.     property ListView: TCustomListView;
  1021.     property Owner: TListItems;
  1022.     property OverlayIndex: Integer index 1;
  1023.     property Selected: Boolean index 3;
  1024.     property StateIndex: Integer index 2;
  1025.     property SubItems: TStrings;
  1026.     property Top: Integer;
  1027.   end;
  1028.  
  1029. { TListItems }
  1030.  
  1031.   TListItems = class(TPersistent)
  1032.   protected
  1033.     procedure DefineProperties(Filer: TFiler); override;
  1034.     function CreateItem(Index: Integer; ListItem: TListItem): TLVItem;
  1035.     function GetCount: Integer;
  1036.     function GetHandle: HWND;
  1037.     function GetItem(Index: Integer): TListItem;
  1038.     procedure SetItem(Index: Integer; Value: TListItem);
  1039.     procedure SetUpdateState(Updating: Boolean);
  1040.   public
  1041.     constructor Create(AOwner: TCustomListView);
  1042.     destructor Destroy; override;
  1043.     function Add: TListItem;
  1044.     procedure Assign(Source: TPersistent); override;
  1045.     procedure BeginUpdate;
  1046.     procedure Clear;
  1047.     procedure Delete(Index: Integer);
  1048.     procedure EndUpdate;
  1049.     function IndexOf(Value: TListItem): Integer;
  1050.     function Insert(Index: Integer): TListItem;
  1051.     property Count: Integer;
  1052.     property Handle: HWND;
  1053.     property Item[Index: Integer]: TListItem; default;
  1054.     property Owner: TCustomListView;
  1055.   end;
  1056.  
  1057. { TIconOptions }
  1058.  
  1059.   TIconArrangement = (iaTop, iaLeft);
  1060.  
  1061.   TIconOptions = class(TPersistent)
  1062.   public
  1063.     constructor Create(AOwner: TCustomListView);
  1064.   published
  1065.     property Arrangement: TIconArrangement default iaTop;
  1066.     property AutoArrange: Boolean default False;
  1067.     property WrapText: Boolean default True;
  1068.   end;
  1069.  
  1070.   TListArrangement = (arAlignBottom, arAlignLeft, arAlignRight,
  1071.     arAlignTop, arDefault, arSnapToGrid);
  1072.   TViewStyle = (vsIcon, vsSmallIcon, vsList, vsReport);
  1073.   TItemState = (isNone, isCut, isDropHilited, isFocused, isSelected);
  1074.   TItemStates = set of TItemState;
  1075.   TItemChange = (ctText, ctImage, ctState);
  1076.   TLVDeletedEvent = procedure(Sender: TObject; Item: TListItem) of object;
  1077.   TLVEditingEvent = procedure(Sender: TObject; Item: TListItem;
  1078.     var AllowEdit: Boolean) of object;
  1079.   TLVEditedEvent = procedure(Sender: TObject; Item: TListItem; var S: string) of object;
  1080.   TLVChangeEvent = procedure(Sender: TObject; Item: TListItem;
  1081.     Change: TItemChange) of object;
  1082.   TLVChangingEvent = procedure(Sender: TObject; Item: TListItem;
  1083.     Change: TItemChange; var AllowChange: Boolean) of object;
  1084.   TLVColumnClickEvent = procedure(Sender: TObject; Column: TListColumn) of object;
  1085.   TLVCompareEvent = procedure(Sender: TObject; Item1, Item2: TListItem;
  1086.     Data: Integer; var Compare: Integer) of object;
  1087.   TSearchDirection = (sdLeft, sdRight, sdAbove, sdBelow, sdAll);
  1088.  
  1089. { TCustomListView }
  1090.  
  1091.   TCustomListView = class(TWinControl)
  1092.   protected
  1093.     function CanChange(Item: TListItem; Change: Integer): Boolean; dynamic;
  1094.     function CanEdit(Item: TListItem): Boolean; dynamic;
  1095.     procedure Change(Item: TListItem; Change: Integer); dynamic;
  1096.     procedure ColClick(Column: TListColumn); dynamic;
  1097.     function ColumnsShowing: Boolean;
  1098.     function CreateListItem: TListItem; virtual;
  1099.     procedure CreateParams(var Params: TCreateParams); override;
  1100.     procedure CreateWnd; override;
  1101.     procedure Delete(Item: TListItem); dynamic;
  1102.     procedure DestroyWnd; override;
  1103.     procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
  1104.     procedure DoStartDrag(var DragObject: TDragObject); override;
  1105.     procedure Edit(const Item: TLVItem); dynamic;
  1106.     function GetDragImages: TCustomImageList; override;
  1107.     function GetItemIndex(Value: TListItem): Integer;
  1108.     procedure InsertItem(Item: TListItem); dynamic;
  1109.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1110.     procedure UpdateColumn(Index: Integer);
  1111.     procedure UpdateColumns;
  1112.     procedure WndProc(var Message: TMessage); override;
  1113.     property BorderStyle: TBorderStyle default bsSingle;
  1114.     property Columns: TListColumns;
  1115.     property ColumnClick: Boolean default True;
  1116.     property ReadOnly: Boolean;
  1117.     property HideSelection: Boolean default True;
  1118.     property IconOptions: TIconOptions;
  1119.     property Items: TListItems;
  1120.     property AllocBy: Integer default 0;
  1121.     property LargeImages: TImageList;
  1122.     property MultiSelect: Boolean default False;
  1123.     property OnChange: TLVChangeEvent;
  1124.     property OnChanging: TLVChangingEvent;
  1125.     property OnColumnClick: TLVColumnClickEvent;
  1126.     property OnCompare: TLVCompareEvent;
  1127.     property OnDeletion: TLVDeletedEvent;
  1128.     property OnEdited: TLVEditedEvent;
  1129.     property OnEditing: TLVEditingEvent;
  1130.     property OnInsert: TLVDeletedEvent;
  1131.     property ShowColumnHeaders: Boolean default True;
  1132.     property SmallImages: TImageList;
  1133.     property SortType: TSortType default stNone;
  1134.     property StateImages: TImageList;
  1135.     property ViewStyle: TViewStyle default vsIcon;
  1136.   public
  1137.     constructor Create(AOwner: TComponent); override;
  1138.     destructor Destroy; override;
  1139.     function AlphaSort: Boolean;
  1140.     procedure Arrange(Code: TListArrangement);
  1141.     function FindCaption(StartIndex: Integer; Value: string;
  1142.       Partial, Inclusive, Wrap: Boolean): TListItem;
  1143.     function FindData(StartIndex: Integer; Value: Pointer;
  1144.       Inclusive, Wrap: Boolean): TListItem;
  1145.     function GetItemAt(X, Y: Integer): TListItem;
  1146.     function GetNearestItem(Point: TPoint;
  1147.       Direction: TSearchDirection): TListItem;
  1148.     function GetNextItem(StartItem: TListItem;
  1149.       Direction: TSearchDirection; States: TItemStates): TListItem;
  1150.     function GetSearchString: string;
  1151.     function IsEditing: Boolean;
  1152.     procedure Scroll(DX, DY: Integer);
  1153.     property Checkboxes: Boolean default False;
  1154.     property Column[Index: Integer]: TListColumn;
  1155.     property DropTarget: TListItem;
  1156.     property GridLines: Boolean default False;
  1157.     property HotTrack: Boolean default False;
  1158.     property ItemFocused: TListItem;
  1159.     property RowSelect: Boolean default False;
  1160.     property SelCount: Integer;
  1161.     property Selected: TListItem;
  1162.     function CustomSort(SortProc: TLVCompare; lParam: Longint): Boolean;
  1163.     function StringWidth(S: string): Integer;
  1164.     procedure UpdateItems(FirstIndex, LastIndex: Integer);
  1165.     property TopItem: TListItem;
  1166.     property ViewOrigin: TPoint;
  1167.     property VisibleRowCount: Integer;
  1168.     property BoundingRect: TRect;
  1169.   end;
  1170.  
  1171. { TListView }
  1172.  
  1173.   TListView = class(TCustomListView)
  1174.   published
  1175.     property Align;
  1176.     property BorderStyle;
  1177.     property Color;
  1178.     property ColumnClick;
  1179.     property OnClick;
  1180.     property OnDblClick;
  1181.     property Columns;
  1182.     property Ctl3D;
  1183.     property DragMode;
  1184.     property ReadOnly default False;
  1185.     property Enabled;
  1186.     property Font;
  1187.     property GridLines;
  1188.     property HideSelection;
  1189.     property HotTrack;
  1190.     property IconOptions;
  1191.     property Items;
  1192.     property Checkboxes;
  1193.     property AllocBy;
  1194.     property MultiSelect;
  1195.     property RowSelect;
  1196.     property OnChange;
  1197.     property OnChanging;
  1198.     property OnColumnClick;
  1199.     property OnCompare;
  1200.     property OnDeletion;
  1201.     property OnEdited;
  1202.     property OnEditing;
  1203.     property OnEnter;
  1204.     property OnExit;
  1205.     property OnInsert;
  1206.     property OnDragDrop;
  1207.     property OnDragOver;
  1208.     property DragCursor;
  1209.     property OnStartDrag;
  1210.     property OnEndDrag;
  1211.     property OnMouseDown;
  1212.     property OnMouseMove;
  1213.     property OnMouseUp;
  1214.     property ParentColor default False;
  1215.     property ParentFont;
  1216.     property ParentShowHint;
  1217.     property ShowHint;
  1218.     property PopupMenu;
  1219.     property ShowColumnHeaders;
  1220.     property SortType;
  1221.     property TabOrder;
  1222.     property TabStop default True;
  1223.     property ViewStyle;
  1224.     property Visible;
  1225.     property OnKeyDown;
  1226.     property OnKeyPress;
  1227.     property OnKeyUp;
  1228.     property LargeImages;
  1229.     property SmallImages;
  1230.     property StateImages;
  1231.   end;
  1232.  
  1233. { TAnimate }
  1234.  
  1235.   TCommonAVI = (aviNone, aviFindFolder, aviFindFile, aviFindComputer, aviCopyFiles,
  1236.     aviCopyFile, aviRecycleFile, aviEmptyRecycle, aviDeleteFile);
  1237.  
  1238.   TAnimate = class(TWinControl)
  1239.   protected
  1240.     procedure CreateParams(var Params: TCreateParams); override;
  1241.     procedure CreateWnd; override;
  1242.     procedure DestroyWnd; override;
  1243.     procedure DoOpen; virtual;
  1244.     procedure DoClose; virtual;
  1245.     procedure DoStart; virtual;
  1246.     procedure DoStop; virtual;
  1247.     procedure Loaded; override;
  1248.   public
  1249.     constructor Create(AOwner: TComponent); override;
  1250.     property FrameCount: Integer;
  1251.     property FrameHeight: Integer;
  1252.     property FrameWidth: Integer;
  1253.     property Open: Boolean;
  1254.     procedure Play(FromFrame, ToFrame: Word; Count: Integer);
  1255.     procedure Reset;
  1256.     procedure Seek(Frame: Smallint);
  1257.     procedure Stop;
  1258.     property ResHandle: THandle;
  1259.     property ResId: Integer;
  1260.     property ResName: string;
  1261.   published
  1262.     property Active: Boolean;
  1263.     property AutoSize: Boolean default True;
  1264.     property Align;
  1265.     property Center: Boolean default True;
  1266.     property Color;
  1267.     property CommonAVI: TCommonAVI default aviNone;
  1268.     property FileName: string;
  1269.     property ParentColor;
  1270.     property ParentShowHint;
  1271.     property Repetitions: Integer default 0;
  1272.     property ShowHint;
  1273.     property StartFrame: Smallint default 1;
  1274.     property StopFrame: Smallint default 0;
  1275.     property Timers: Boolean default False;
  1276.     property Transparent: Boolean default True;
  1277.     property Visible;
  1278.     property OnOpen: TNotifyEvent;
  1279.     property OnClose: TNotifyEvent;
  1280.     property OnStart: TNotifyEvent;
  1281.     property OnStop: TNotifyEvent;
  1282.   end;
  1283.  
  1284. { TToolBar }
  1285.  
  1286. const
  1287.   CN_REQUESTALIGN = WM_USER + $1000;
  1288.  
  1289. type
  1290.   TToolButtonStyle = (tbsButton, tbsCheck, tbsDropDown, tbsSeparator, tbsDivider);
  1291.  
  1292.   TToolButtonState = (tbsChecked, tbsPressed, tbsEnabled, tbsHidden,
  1293.     tbsIndeterminate, tbsWrap);
  1294.  
  1295.   TToolBar = class;
  1296.  
  1297.   TToolButton = class(TGraphicControl)
  1298.   protected
  1299.     FToolBar: TToolBar;
  1300.     procedure BeginUpdate; virtual;
  1301.     procedure EndUpdate; virtual;
  1302.     procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
  1303.     procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
  1304.     procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
  1305.       X, Y: Integer); override;
  1306.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1307.     procedure Paint; override;
  1308.     procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
  1309.     procedure SetToolBar(AToolBar: TToolBar);
  1310.     procedure UpdateControl; virtual;
  1311.     property Index: Integer;
  1312.   public
  1313.     constructor Create(AOwner: TComponent); override;
  1314.     procedure Click; override;
  1315.   published
  1316.     property AllowAllUp: Boolean default False;
  1317.     property Caption;
  1318.     property Down: Boolean default False;
  1319.     property DragCursor;
  1320.     property DragMode;
  1321.     property DropdownMenu: TPopupMenu;
  1322.     property Enabled;
  1323.     property Grouped: Boolean default False;
  1324.     property ImageIndex: Integer;
  1325.     property Indeterminate: Boolean default False;
  1326.     property ParentShowHint;
  1327.     property PopupMenu;
  1328.     property Wrap: Boolean default False;
  1329.     property ShowHint;
  1330.     property Style: TToolButtonStyle default tbsButton;
  1331.     property Visible;
  1332.     property OnClick;
  1333.     property OnDragDrop;
  1334.     property OnDragOver;
  1335.     property OnEndDrag;
  1336.     property OnMouseDown;
  1337.     property OnMouseMove;
  1338.     property OnMouseUp;
  1339.     property OnStartDrag;
  1340.   end;
  1341.  
  1342.   TToolBar = class(TToolWindow)
  1343.   protected
  1344.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  1345.     procedure CreateParams(var Params: TCreateParams); override;
  1346.     procedure CreateWnd; override;
  1347.     procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
  1348.     procedure Loaded; override;
  1349.     procedure Notification(AComponent: TComponent;
  1350.       Operation: TOperation); override;
  1351.     procedure RepositionButton(Index: Integer);
  1352.     procedure RepositionButtons(Index: Integer);
  1353.     procedure Resize; dynamic;
  1354.     procedure WndProc(var Message: TMessage); override;
  1355.   public
  1356.     constructor Create(AOwner: TComponent); override;
  1357.     destructor Destroy; override;
  1358.     property ButtonCount: Integer;
  1359.     property Buttons[Index: Integer]: TToolButton;
  1360.     property RowCount: Integer;
  1361.   published
  1362.     property Align default alTop;
  1363.     property AutoSize: Boolean default False;
  1364.     property BorderWidth;
  1365.     property ButtonHeight: Integer default 22;
  1366.     property ButtonWidth: Integer default 23;
  1367.     property Color;
  1368.     property Ctl3D;
  1369.     property DisabledImages: TImageList;
  1370.     property DragCursor;
  1371.     property DragMode;
  1372.     property EdgeBorders default [ebTop];
  1373.     property EdgeInner;
  1374.     property EdgeOuter;
  1375.     property Enabled;
  1376.     property Flat: Boolean default False;
  1377.     property Font;
  1378.     property Height default 32;
  1379.     property HotImages: TImageList;
  1380.     property Images: TImageList;
  1381.     property Indent: Integer default 0;
  1382.     property List: Boolean default False;
  1383.     property ParentColor;
  1384.     property ParentFont;
  1385.     property ParentShowHint;
  1386.     property PopupMenu;
  1387.     property ShowCaptions: Boolean default False;
  1388.     property ShowHint;
  1389.     property TabOrder;
  1390.     property TabStop;
  1391.     property Visible;
  1392.     property Wrapable: Boolean default True;
  1393.     property OnClick;
  1394.     property OnDblClick;
  1395.     property OnDragDrop;
  1396.     property OnDragOver;
  1397.     property OnEndDrag;
  1398.     property OnEnter;
  1399.     property OnExit;
  1400.     property OnMouseDown;
  1401.     property OnMouseMove;
  1402.     property OnMouseUp;
  1403.     property OnResize: TNotifyEvent;
  1404.     property OnStartDrag;
  1405.  
  1406.   end;
  1407.  
  1408. { TCoolBar }
  1409.  
  1410. const
  1411.   CN_BANDCHANGE = WM_USER + $1000;
  1412.  
  1413. type
  1414.   TCoolBar = class;
  1415.  
  1416.   TCoolBand = class(TCollectionItem)
  1417.   protected
  1418.     function GetDisplayName: string; override;
  1419.     procedure ParentColorChanged; dynamic;
  1420.     procedure ParentBitmapChanged; dynamic;
  1421.   public
  1422.     constructor Create(Collection: TCollection); override;
  1423.     destructor Destroy; override;
  1424.     procedure Assign(Source: TPersistent); override;
  1425.     property BorderStyle: TBorderStyle default bsSingle;
  1426.     property Height: Integer;
  1427.   published
  1428.     property Bitmap: TBitmap;
  1429.     property Break: Boolean default True;
  1430.     property Color: TColor default clBtnFace;
  1431.     property Control: TWinControl;
  1432.     property FixedBackground: Boolean default True;
  1433.     property FixedSize: Boolean default False;
  1434.     property HorizontalOnly: Boolean default False;
  1435.     property ImageIndex: Integer;
  1436.     property MinHeight: Integer default 25;
  1437.     property MinWidth: Integer default 0;
  1438.     property ParentColor: Boolean default True;
  1439.     property ParentBitmap: Boolean default True;
  1440.     property Text: string;
  1441.     property Visible: Boolean default True;
  1442.     property Width: Integer;
  1443.   end;
  1444.  
  1445.   TCoolBands = class(TCollection)
  1446.   protected
  1447.     function GetOwner: TPersistent; override;
  1448.     procedure Update(Item: TCollectionItem); override;
  1449.     function FindBand(AControl: TControl): TCoolBand;
  1450.     function HaveGraphic: Boolean;
  1451.   public
  1452.     constructor Create(CoolBar: TCoolBar);
  1453.     function Add: TCoolBand;
  1454.     property CoolBar: TCoolBar;
  1455.     property Items[Index: Integer]: TCoolBand; default;
  1456.   end;
  1457.  
  1458.   TCoolBar = class(TToolWindow)
  1459.   protected
  1460.     procedure AlignControls(AControl: TControl; var Rect: TRect); override;
  1461.     procedure Change; dynamic;
  1462.     procedure CreateParams(var Params: TCreateParams); override;
  1463.     procedure CreateWnd; override;
  1464.     function GetPalette: HPALETTE; override;
  1465.     procedure Loaded; override;
  1466.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  1467.     procedure Resize; dynamic;
  1468.     procedure WndProc(var Message: TMessage); override;
  1469.   public
  1470.     constructor Create(AOwner: TComponent); override;
  1471.     destructor Destroy; override;
  1472.   published
  1473.     property Align read GetAlign write SetAlign default alTop;
  1474.     property AutoSize: Boolean default False;
  1475.     property BandBorderStyle: TBorderStyle default bsSingle;
  1476.     property Bands: TCoolBands;
  1477.     property BorderWidth;
  1478.     property Color;
  1479.     property Ctl3D;
  1480.     property DragCursor;
  1481.     property DragMode;
  1482.     property EdgeBorders;
  1483.     property EdgeInner;
  1484.     property EdgeOuter;
  1485.     property Enabled;
  1486.     property FixedSize: Boolean default False;
  1487.     property FixedOrder: Boolean default False;
  1488.     property Font;
  1489.     property Images: TImageList;
  1490.     property ParentColor;
  1491.     property ParentFont;
  1492.     property ParentShowHint;
  1493.     property Bitmap: TBitmap;
  1494.     property PopupMenu;
  1495.     property ShowHint;
  1496.     property ShowText: Boolean default True;
  1497.     property Vertical: Boolean default False;
  1498.     property Visible;
  1499.     property OnChange: TNotifyEvent;
  1500.     property OnClick;
  1501.     property OnDblClick;
  1502.     property OnDragDrop;
  1503.     property OnDragOver;
  1504.     property OnEndDrag;
  1505.     property OnMouseDown;
  1506.     property OnMouseMove;
  1507.     property OnMouseUp;
  1508.     property OnResize: TNotifyEvent;
  1509.     property OnStartDrag;
  1510.   end;
  1511.  
  1512. { TDateTimePicker }
  1513.  
  1514. type
  1515.   EDateTimeError = class(Exception);
  1516.  
  1517.   TDateTimeKind = (dtkDate, dtkTime);
  1518.   TDTDateMode = (dmComboBox, dmUpDown);
  1519.   TDTDateFormat = (dfShort, dfLong);
  1520.   TDTCalAlignment = (dtaLeft, dtaRight);
  1521.  
  1522.   TDTParseInputEvent = procedure(Sender: TObject; const UserString: string;
  1523.     var DateAndTime: TDateTime; var AllowChange: Boolean) of object;
  1524.  
  1525.   TDateTimePicker = class;
  1526.  
  1527.   TDateTimeColors = class(TPersistent)
  1528.   public
  1529.     constructor Create(AOwner: TDateTimePicker);
  1530.     procedure Assign(Source: TPersistent); override;
  1531.   published
  1532.     property BackColor: TColor index 0 default clWindow;
  1533.     property TextColor: TColor index 1 default clWindowText;
  1534.     property TitleBackColor: TColor index 2 default clActiveCaption;
  1535.     property TitleTextColor: TColor index 3 default clWhite;
  1536.     property MonthBackColor: TColor index 4 default clWhite;
  1537.     property TrailingTextColor: TColor index 5 default clInactiveCaptionText;
  1538.   end;
  1539.  
  1540.   TDateTimePicker = class(TWinControl)
  1541.   protected
  1542.     procedure CreateParams(var Params: TCreateParams); override;
  1543.     procedure CreateWnd; override;
  1544.     procedure Change; dynamic;
  1545.   public
  1546.     constructor Create(AOwner: TComponent); override;
  1547.     destructor Destroy; override;
  1548.     property DateTime: TDateTime;
  1549.   published
  1550.     property CalAlignment: TDTCalAlignment;
  1551.     property CalColors: TDateTimeColors;
  1552.     // The Date, Time, ShowCheckbox, and Checked properties must be in this order:
  1553.     property Date: TDate;
  1554.     property Time: TTime;
  1555.     property ShowCheckbox: Boolean default False;
  1556.     property Checked: Boolean default True;
  1557.     property Color stored True default clWindow;
  1558.     property DateFormat: TDTDateFormat;
  1559.     property DateMode: TDTDateMode;
  1560.     property DragCursor;
  1561.     property DragMode;
  1562.     property Enabled;
  1563.     property Font;
  1564.     property ImeMode;
  1565.     property ImeName;
  1566.     property Kind: TDateTimeKind;
  1567.     property MaxDate: TDate;
  1568.     property MinDate: TDate;
  1569.     property ParseInput: Boolean;
  1570.     property ParentColor default False;
  1571.     property ParentFont;
  1572.     property ParentShowHint;
  1573.     property PopupMenu;
  1574.     property ShowHint;
  1575.     property TabOrder;
  1576.     property TabStop default True;
  1577.     property Visible;
  1578.     property OnClick;
  1579.     property OnCloseUp: TNotifyEvent;
  1580.     property OnChange: TNotifyEvent;
  1581.     property OnDropDown: TNotifyEvent;
  1582.     property OnDblClick;
  1583.     property OnDragDrop;
  1584.     property OnDragOver;
  1585.     property OnEndDrag;
  1586.     property OnEnter;
  1587.     property OnExit;
  1588.     property OnKeyDown;
  1589.     property OnKeyPress;
  1590.     property OnKeyUp;
  1591.     property OnStartDrag;
  1592.     property OnUserInput: TDTParseInputEvent;
  1593.   end;
  1594.  
  1595. function InitCommonControl(CC: Integer): Boolean;
  1596. procedure CheckCommonControl(CC: Integer);
  1597.  
  1598. const
  1599.   ComCtlVersionIE3 = $00040046;
  1600.   ComCtlVersionIE4 = $00040047;
  1601.  
  1602. function GetComCtlVersion: Integer;
  1603. procedure CheckToolMenuDropdown(ToolButton: TToolButton);
  1604.  
  1605. implementation
  1606.